Scroll to navigation

std::basic_string::operator[](3) C++ Standard Libary std::basic_string::operator[](3)

NAME

std::basic_string::operator[] - std::basic_string::operator[]

Synopsis


CharT& operator[]( size_type pos ); (1) (constexpr since C++20)
const CharT& operator[]( size_type pos ) const; (2) (constexpr since C++20)


Returns a reference to the character at specified location pos if pos < size(), or a
reference to CharT() if pos == size(). No bounds checking is performed.


If pos > size(), the behavior is undefined.


For overload (1), if pos == size(), the behavior is undefined
if the object referred by the returned reference is modified to any value other than
CharT()
(since C++11).

Parameters


pos - position of the character to return

Return value


*(begin() + pos) if pos < size(), or a reference to CharT() if pos == size().

Complexity


Constant.

Example

// Run this code


#include <iostream>
#include <string>


int main()
{
const std::string e("Exemplar");
for (unsigned i = e.length() - 1; i != 0; i /= 2)
std::cout << e[i];
std::cout << '\n';


const char* c = &e[0];
std::cout << c << '\n'; // print as a C string


// Change the last character of s into a 'y'
std::string s("Exemplar ");
s[s.size() - 1] = 'y'; // equivalent to s.back() = 'y';
std::cout << s << '\n';
}

Output:


rmx
Exemplar
Exemplary


Defect reports


The following behavior-changing defect reports were applied retroactively to
previously published C++ standards.


DR Applied to Behavior as published Correct behavior
LWG 259 C++98 non-const overload could return const lvalue changed to return
data()[pos], which was ill-formed *(begin() + pos)
if pos == size(), the behavior of modifying
LWG 2475 C++11 the well-defined if
object referred by the returned reference modified to CharT()
was undefined

See also


at accesses the specified character with bounds checking
(public member function)
front accesses the first character
(DR*) (public member function)
back accesses the last character
(DR*) (public member function)
operator[] accesses the specified character
(public member function of std::basic_string_view<CharT,Traits>)

2024.06.10 http://cppreference.com